#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>

int main()
{
    int fd = open("log.txt",O_WRONLY|O_TRUNC);//0、1、2被占用，fd为3
    dup2(fd,1);
    printf("Hello,World\n");
    return 0;
}



// int main()
// {
//     close(1);//关掉stdin
    
//     int fd = open("log.txt",O_WRONLY);
//     printf("log.txt fd:%d\n",fd);
//     return 0;
// }



// int main()
// {
//     char str[1024];
//     int fd = open("log.txt",O_RDONLY);
//     ssize_t s = read(fd,str,sizeof(str));
//     if(s > 0)
//     {
//         //文件中的内容不以\0结尾
//         str[s] = 0;
//         printf("%s",str);
//     }
//     return 0;
// }


// int main()
// {
//     printf("%d\n",stdin->_fileno);
//     printf("%d\n",stdout->_fileno);
//     printf("%d\n",stderr->_fileno);
//     return 0;
// }



// int main()
// {
//         int fd1 = open("log1.txt",O_WRONLY | O_CREAT,0666);
//         int fd2 = open("log2.txt",O_WRONLY | O_CREAT,0666);
//         int fd3 = open("log3.txt",O_WRONLY | O_CREAT,0666);

//         printf("%d\n",fd1);
//         printf("%d\n",fd2);
//         printf("%d\n",fd3);
//         return 0;
// }



// #include <stdio.h>

// #define READ 1<<0 //读
// #define WRITE 1<<1//写
// #define APPEND 1<<2//追加
// void IsBite(int sub)
// {
//     if(sub & READ)
//     {
//         printf("This file have read\n");
//     }
//     if(sub & WRITE)
//     {
//         printf("This file have write\n");
//     }
//     if(sub & APPEND)
//     {
//         printf("This file have append\n");
//     }
//     printf("\n------------------------------\n");
// }

// int main()
// {
//     int sub1 = 0;
//     int sub2 = 0;
//     int sub3 = 0;
//     //1.只有读权限
//     sub1 = READ;
//     //2.既有读又有写
//     sub2 = READ | WRITE;
//     //3.读写追加都有
//     sub3 = READ | WRITE | APPEND;
//     IsBite(sub1);
//     IsBite(sub2);
//     IsBite(sub3);
//     return 0;

// }



// #include <stdio.h>

// int main()
// {
//     printf("Hello,World!\n");
//     fprintf(stdout,"Hello,World!\n");
//     return 0;
// }
